package base.thread_JUC2.chapter03.demo03;

/**
 * Java 并发API提供了CountDownLatch类，它是一个同步辅助类。在完成一组正在其他线程中执行的操作之前，它允许线程一直等待。
 * 这个类使用一个整数进行初始化，这个整数就是线程要等待完成的操作的数目。当一个线程要等待某些操作先执行完时，需要调用await()方法，
 * 这个方法让线程进入休眠直到等待的所有操作都完成。当某一个操作完成后，它将调用countDown()方法将
 * CountDownLatch类的内部计数器减1.当计数器变为0的时候，CountDownLatch类将唤醒所有调用await()方法而进入休眠的线程。
 *
 * 这个案例使用CountDownLatch类实现视频会议系统，这个视频会议系统将等待所有的参会者都到齐才开始。
 */
public class TestCase {
    public static void main(String[] args) {
        Videoconference videoconference = new Videoconference(10);
        Thread conference = new Thread(videoconference);
        conference.start();

        for (int i = 0; i < 10; i++) {
            Participant participant = new Participant(videoconference, "Participant_" + i);
            Thread t = new Thread(participant);
            t.start();
        }
    }
}
